package com.shop.util;

import java.util.HashMap;

import org.apache.log4j.Logger;

import com.g3net.tool.HttpUtils;
import com.g3net.tool.StringUtils;

/**
 * 
 * @author yuxiaowei
 * 
 */
public class Version {
	private static Logger log = Logger.getLogger(Version.class);
	private static Logger versionlog = Logger.getLogger("version");
	
	public static int STATUS_FORCE=1;//强制更新
	public static int STATUS_ALERT=2;//提示更新
	public static int STATUS_OK=3;//正常版本
	public static int STATUS_MAINTAIN=4;//软件维护
	public static int STATUS_MSG=5;//系统提示
	public static int STATUS_ERROR=-1;//错误状态
	
	public String nexturl=null;
	public VersionData vd=null;
	public static String generatorKey(String ver_proid,String ver_code)
	{
		if(ver_proid!=null&&ver_code!=null) 
		return ver_proid+"_"+ver_code;
		return "";
	}
	private HashMap<String, String[]> lmongtreeHash = null;

	public HashMap<String, String[]> getLmongtreeHash() {
		return lmongtreeHash;
	}

	public boolean isOldVersion()
	{
		String[] proID=lmongtreeHash.get("proID");//131
		String[] funid = lmongtreeHash.get("funid");//功能 10:获取在线推荐
		if(proID!=null&&proID[0].equals("131")&&funid!=null&&funid[0].equals("10")&&vd!=null&&
				(vd.ver_code.equals("04.00.00")||vd.ver_code.equals("05.00.00")||vd.ver_code.equals("05.01.00")))
		{
			log.debug("sybiam 版推荐书籍功能不做升级提示");
			return true;
		}
		
		if(vd!=null&&(vd.ver_code.equals("03.00.00")||vd.ver_code.equals("03.00.02")))//旧版本不支持弹框的提示升级
		{
			return true;
		}
		return false;
	}
	public void setLmongtreeHash(HashMap<String, String[]> lmongtreeHash) {
//		log.debug("设置请求参数列表，初始化客户端版本信息");
		this.lmongtreeHash = lmongtreeHash;
		if(lmongtreeHash==null)
		{
			return ;
		}
		String[] proID=lmongtreeHash.get("proID");
		String[] version=lmongtreeHash.get("version");
		String[] url=lmongtreeHash.get("thisurl");
		nexturl=url[0].substring(0,url[0].indexOf("&proID="));
		if(proID==null)
		{
			return ;
		}
		String prString=null;
		try{
			String[] vps=lmongtreeHash.get("vps");
			VPSTransfer v=new VPSTransfer(vps[0]);
			if(v.isNewVps())
			{
				prString=v.getVersion();
			}
		}catch (Exception e) {
			// TODO: handle exception
			log.error("",e);
			prString=null;
		}
		
		if(prString==null)//取版本出现问题
		{
			return ;
		}
		//m_lrc2 = myCode(m_lrc2,m_filesize);
//		log.debug("解密后:" + prString);
		String key=generatorKey(proID[0],prString);
		vd=Config.version.get(key);
		if(vd!=null)
		{
			versionlog.debug( "proID="+proID[0]+" version="+prString+" key="+key+" nexturl="+nexturl+" vd="+vd);
		}else{
			versionlog.debug( "proID="+proID[0]+" version="+prString+" key="+key+" nexturl="+nexturl+" vd=null");
		}
	}
	/*
	 * return -1:错误 2--提示更新，3--OK，1--强制更新
	 */
	public int getVsersionStatus()
	{
		if(vd==null)//没有找到版本信息时当做正常版本处理
		{
			return STATUS_OK;
		}
		return Integer.parseInt(vd.ver_status);
	}
	/**
	 * 根据版本状态返回协议相关的数据
	 * @return
	 */
	public byte[] getVersionData()
	{
		
//		int status=0;
//		try {
//			status=Integer.parseInt(vd.ver_status);
//		} catch (Exception e) {
//			// TODO: handle exception
//			status=STATUS_OK;
//		}
//			
//		if(status==STATUS_OK)
//		{
//			versionlog.debug("正常版本");
//			WriteStream ws = new WriteStream();
//			try {
//				ws.writeByte(0x02);//弹出框提示
//				ws.writeUTF("当前版本为最新版.");//提示语
//				ws.writeByte(0x00);//操作码
//				ws.writeUTF("");
//				return ws.toByteArray();
//				//ws.writeUTF(vd.)
//			} catch (IOException e) {
//				// TODO Auto-generated catch block
//				versionlog.error("", e);
//			}
//			return null;
//		}
//		WriteStream ws = new WriteStream();
//		
//		if(status==STATUS_FORCE)//强制更新
//		{
//			versionlog.debug("强制更新");
//			try {
//				ws.writeByte(0x02);//弹出框提示
//				ws.writeUTF(vd.ver_des+vd.last_ver_des);//提示语
////				ws.writeByte(0x01);//有操作
//				ws.writeByte(0x01);//操作码
//				ws.writeUTF(vd.ver_down);
//				return ws.toByteArray();
//				//ws.writeUTF(vd.)
//			} catch (IOException e) {
//				// TODO Auto-generated catch block
//				versionlog.error("", e);
//			}
//		}
//		if(status==STATUS_MAINTAIN)//软件维护
//		{
//			versionlog.debug("软件维护");
//			try {
//				ws.writeByte(0x02);//弹出框提示
//				ws.writeUTF(vd.ver_des);//提示语
//				ws.writeByte(0x04);//操作码,强制退出
//				ws.writeUTF("");
//				return ws.toByteArray();
//				//ws.writeUTF(vd.)
//			} catch (IOException e) {
//				// TODO Auto-generated catch block
//				versionlog.error("", e);
//			}
//		}
//		if(status==STATUS_MSG)//系统提示
//		{
//			versionlog.debug("系统提示 nexturl="+nexturl);
//			try {
//				ws.writeByte(0x02);//弹出框提示
//				ws.writeUTF(vd.ver_des);//提示语
////				ws.writeByte(0x01);//有操作
//				ws.writeByte(0x05);//操作码
//				ws.writeUTF(nexturl);
//				return ws.toByteArray();
//				//ws.writeUTF(vd.)
//			} catch (IOException e) {
//				// TODO Auto-generated catch block
//				versionlog.error("", e);
//			}
//		}
//		
//		if(status==STATUS_ALERT){//提示更新
//			versionlog.debug("提示更新");
//			if(isOldVersion())//旧版本不支持弹框的提示升级
//			{
//				PressPages pp=new PressPages();
//				return pp.getLink(vd.ver_des, vd.ver_down, 0x01);
//			}
//			try {
//				ws.writeByte(0x02);//弹出框提示
//				ws.writeUTF(vd.ver_des+vd.last_ver_des);//提示语
////				ws.writeByte(0x01);//有操作
//				ws.writeByte(0x06);//操作码
//				ws.writeUTF(vd.ver_down);
//				return ws.toByteArray();
//				//ws.writeUTF(vd.)
//			} catch (Exception e) {
//				// TODO Auto-generated catch block
//				versionlog.error("", e);
//			}
//		}
//		if(status==STATUS_ERROR||vd==null)//版本信息错误
//		{
//			versionlog.debug("版本信息错误");
//			try {
//				ws.writeByte(0x02);//弹出框提示
//				ws.writeUTF("版本验证失败，请您稍候再试或者下载最新版本");//提示语
////				ws.writeByte(0x01);//有操作
//				ws.writeByte(0x01);//操作码
//				ws.writeUTF("wap.3g.cn");
//				return ws.toByteArray();
//				//ws.writeUTF(vd.)
//			} catch (IOException e) {
//				// TODO Auto-generated catch block
//				versionlog.error("", e);
//			}
//		}
		return null;
		
	}
	public static void loadData()
	{
		String[] pids=new String[]{"4","12"};//12---booktest 4---book
		int count=0;
		for (int i = 0; i < pids.length; i++) {
			String results=null;
			try {
				results = HttpUtils.get("http://"+Config.VERSIONSERVER+"/versions/check?p="+pids[i], "utf-8",50000);
			} catch (Exception e1) {
				// TODO Auto-generated catch block
				log.error("",e1);
			}
//			String results=HttpUtils.get("http://192.168.1.207:8888/versions/check?p="+pids[i], "utf-8",20000);
			if(StringUtils.hasText(results))
			{
				versionlog.debug("刷新版本配置信息开始");
				Config.version.clear();//获取到最新数据后才需要清空内存
				String[] lines=results.split("###");
				for (String line : lines) {
					if(StringUtils.hasText(line))
					{
						String[] values=line.split("\\|\\|\\|");
						if(values!=null&&values.length>=7)
						{
							VersionData vd = new VersionData();
							vd.ver_proid = values[0];
							vd.ver_code = values[1];
							vd.ver_status = values[2];
							int status=0;
							try {
								status=Integer.parseInt(vd.ver_status);
							} catch (Exception e) {
								// TODO: handle exception
								status=STATUS_OK;
							}
//							if(status==STATUS_ALERT)
//							{
//								vd.ver_down = values[4].replace("http://", "outx://");
////								System.out.println(vd.ver_down);
//							}
							vd.ver_down=values[4];
							vd.ver_des =values[3];
							vd.last_ver_des="";
//							if(values.length==8){
//								vd.last_ver_des="最新版 "+values[6]+" 发布于 "+values[5]+" "+ values[7];
//							}else{
//								vd.last_ver_des="最新版 "+values[6]+" 发布于 "+values[5];
//							}
							
//							log.debug(vd.ver_des);
							count++;
							Config.version.put(Version.generatorKey(vd.ver_proid,vd.ver_code) , vd);
						}
						
					}
				}
			}
		}
		
		
		versionlog.debug("刷新版本配置信息结束 本次刷新的版本信息共有"+count+"条");
	}
	public static void main(String[] args) {
		loadData();
//		log.debug(results);
	}
}
